<!DOCTYPE html>

<html lang="en" data-content_root="../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

  <title>CMake 3.30 Release Notes &mdash; CMake 4.1.1 Documentation</title>

    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a2c47e09" />
    <link rel="stylesheet" type="text/css" href="../_static/cmake.css?v=4d06bd55" />
    
    <script src="../_static/documentation_options.js?v=e6a937a4"></script>
    <script src="../_static/doctools.js?v=9bcbadda"></script>
    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
    
    <link rel="icon" href="../_static/cmake-favicon.ico"/>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="CMake 3.29 Release Notes" href="3.29.html" />
    <link rel="prev" title="CMake 3.31 Release Notes" href="3.31.html" />
 

  </head><body>
    <input id="sidebar-check" type="checkbox" />
    <label id="sidebar-overlay" for="sidebar-check"></label>



    <div class="related relbar1" role="navigation" aria-label="Related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="3.29.html" title="CMake 3.29 Release Notes"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="3.31.html" title="CMake 3.31 Release Notes"
             accesskey="P">previous</a> |</li>
  <li>
    <label class="sidebar-toggle" for="sidebar-check"></label>
  </li>
  <li class="rootlink">
    <img src="../_static/cmake-logo-16.png" width="16" height="16" alt=""/>
    <a href="https://cmake.org/">CMake 4.1.1</a>
    <span class="reldelim1"> &#187;</span>
  </li>
  <li>
    <a href="../index.html">Documentation</a> &#187;
  </li>

          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">CMake Release Notes</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">CMake 3.30 Release Notes</a></li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <section id="cmake-3-30-release-notes">
<h1><a class="toc-backref" href="#id7" role="doc-backlink">CMake 3.30 Release Notes</a><a class="headerlink" href="#cmake-3-30-release-notes" title="Link to this heading">¶</a></h1>
<nav class="contents" id="contents">
<p class="topic-title">Contents</p>
<ul class="simple">
<li><p><a class="reference internal" href="#cmake-3-30-release-notes" id="id7">CMake 3.30 Release Notes</a></p>
<ul>
<li><p><a class="reference internal" href="#new-features" id="id8">New Features</a></p>
<ul>
<li><p><a class="reference internal" href="#presets" id="id9">Presets</a></p></li>
<li><p><a class="reference internal" href="#file-based-api" id="id10">File-Based API</a></p></li>
<li><p><a class="reference internal" href="#generators" id="id11">Generators</a></p></li>
<li><p><a class="reference internal" href="#languages" id="id12">Languages</a></p></li>
<li><p><a class="reference internal" href="#commands" id="id13">Commands</a></p></li>
<li><p><a class="reference internal" href="#variables" id="id14">Variables</a></p></li>
<li><p><a class="reference internal" href="#properties" id="id15">Properties</a></p></li>
<li><p><a class="reference internal" href="#modules" id="id16">Modules</a></p></li>
<li><p><a class="reference internal" href="#generator-expressions" id="id17">Generator Expressions</a></p></li>
<li><p><a class="reference internal" href="#ctest" id="id18">CTest</a></p></li>
<li><p><a class="reference internal" href="#cpack" id="id19">CPack</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#deprecated-and-removed-features" id="id20">Deprecated and Removed Features</a></p></li>
<li><p><a class="reference internal" href="#other-changes" id="id21">Other Changes</a></p></li>
<li><p><a class="reference internal" href="#updates" id="id22">Updates</a></p>
<ul>
<li><p><a class="reference internal" href="#id2" id="id23">3.30.1, 3.30.2</a></p></li>
<li><p><a class="reference internal" href="#id3" id="id24">3.30.3</a></p></li>
<li><p><a class="reference internal" href="#id4" id="id25">3.30.4</a></p></li>
<li><p><a class="reference internal" href="#id5" id="id26">3.30.5</a></p></li>
<li><p><a class="reference internal" href="#id6" id="id27">3.30.6, 3.30.7, 3.30.8, 3.30.9</a></p></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
<p>Changes made since CMake 3.29 include the following.</p>
<section id="new-features">
<h2><a class="toc-backref" href="#id8" role="doc-backlink">New Features</a><a class="headerlink" href="#new-features" title="Link to this heading">¶</a></h2>
<section id="presets">
<h3><a class="toc-backref" href="#id9" role="doc-backlink">Presets</a><a class="headerlink" href="#presets" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p><span class="target" id="index-0-manual:cmake-presets(7)"></span><a class="reference internal" href="../manual/cmake-presets.7.html#manual:cmake-presets(7)" title="cmake-presets(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-presets(7)</span></code></a> files now support schema version <code class="docutils literal notranslate"><span class="pre">9</span></code>.
<code class="docutils literal notranslate"><span class="pre">include</span></code> fields now expand all macros except <code class="docutils literal notranslate"><span class="pre">$env{}</span></code> and
preset-specific macros, i.e., those derived from the fields
inside a preset's definition.</p></li>
</ul>
</section>
<section id="file-based-api">
<h3><a class="toc-backref" href="#id10" role="doc-backlink">File-Based API</a><a class="headerlink" href="#file-based-api" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-manual:cmake-file-api(7)"></span><a class="reference internal" href="../manual/cmake-file-api.7.html#manual:cmake-file-api(7)" title="cmake-file-api(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-file-api(7)</span></code></a> &quot;cmakeFiles&quot; version 1 object's <code class="docutils literal notranslate"><span class="pre">version</span></code>
field has been updated to 1.1.  It gained a <code class="docutils literal notranslate"><span class="pre">globsDependent</span></code> field to
report <span class="target" id="index-0-command:file"></span><a class="reference internal" href="../command/file.html#glob" title="file(glob)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(GLOB)</span></code></a> calls using <code class="docutils literal notranslate"><span class="pre">CONFIGURE_DEPENDS</span></code>.</p></li>
</ul>
</section>
<section id="generators">
<h3><a class="toc-backref" href="#id11" role="doc-backlink">Generators</a><a class="headerlink" href="#generators" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p><a class="reference internal" href="../manual/cmake-generators.7.html#visual-studio-generators"><span class="std std-ref">Visual Studio Generators</span></a> now add <code class="docutils literal notranslate"><span class="pre">UseDebugLibraries</span></code> indicators to
<code class="docutils literal notranslate"><span class="pre">.vcxproj</span></code> files to denote which configurations are debug configurations.
See policy <span class="target" id="index-0-policy:CMP0162"></span><a class="reference internal" href="../policy/CMP0162.html#policy:CMP0162" title="CMP0162"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0162</span></code></a>.</p></li>
</ul>
</section>
<section id="languages">
<h3><a class="toc-backref" href="#id12" role="doc-backlink">Languages</a><a class="headerlink" href="#languages" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-manual:cmake-compile-features(7)"></span><a class="reference internal" href="../manual/cmake-compile-features.7.html#manual:cmake-compile-features(7)" title="cmake-compile-features(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">Compile</span> <span class="pre">Features</span></code></a> functionality
now implements support for the <code class="docutils literal notranslate"><span class="pre">cxx_std_26</span></code> and <code class="docutils literal notranslate"><span class="pre">cuda_std_26</span></code>
meta-features to indicate that the compiler mode must be at least C++26.
These meta-features were first documented by CMake 3.25, but were not fully
implemented.</p></li>
</ul>
</section>
<section id="commands">
<h3><a class="toc-backref" href="#id13" role="doc-backlink">Commands</a><a class="headerlink" href="#commands" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-command:add_library"></span><a class="reference internal" href="../command/add_library.html#command:add_library" title="add_library"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">add_library()</span></code></a> command, on platforms that do not support shared
libraries, now rejects creation of shared libraries instead of automatically
converting them to static libraries.  See policy <span class="target" id="index-0-policy:CMP0164"></span><a class="reference internal" href="../policy/CMP0164.html#policy:CMP0164" title="CMP0164"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0164</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-0-command:enable_language"></span><a class="reference internal" href="../command/enable_language.html#command:enable_language" title="enable_language"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">enable_language()</span></code></a> command now fails with an error
if it is called before the first <span class="target" id="index-0-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project()</span></code></a> call.
See policy <span class="target" id="index-0-policy:CMP0165"></span><a class="reference internal" href="../policy/CMP0165.html#policy:CMP0165" title="CMP0165"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0165</span></code></a>.</p></li>
<li><p>The <span class="target" id="index-1-command:file"></span><a class="reference internal" href="../command/file.html#download" title="file(download)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(DOWNLOAD)</span></code></a> and <span class="target" id="index-2-command:file"></span><a class="reference internal" href="../command/file.html#upload" title="file(upload)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(UPLOAD)</span></code></a> commands
gained a <code class="docutils literal notranslate"><span class="pre">TLS_VERSION</span> <span class="pre">&lt;min&gt;</span></code> option to specify the minimum TLS
version for connections to <code class="docutils literal notranslate"><span class="pre">https://</span></code> URLs.</p></li>
</ul>
</section>
<section id="variables">
<h3><a class="toc-backref" href="#id14" role="doc-backlink">Variables</a><a class="headerlink" href="#variables" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-variable:CMAKE_&lt;LANG&gt;_STANDARD_LATEST"></span><a class="reference internal" href="../variable/CMAKE_LANG_STANDARD_LATEST.html#variable:CMAKE_&lt;LANG&gt;_STANDARD_LATEST" title="CMAKE_&lt;LANG&gt;_STANDARD_LATEST"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_&lt;LANG&gt;_STANDARD_LATEST</span></code></a> variable was added to
describe the latest <code class="docutils literal notranslate"><span class="pre">&lt;LANG&gt;</span></code> language standard CMake supports for
the selected compiler.</p></li>
<li><p>The <span class="target" id="index-0-envvar:CMAKE_TLS_VERIFY"></span><a class="reference internal" href="../envvar/CMAKE_TLS_VERIFY.html#envvar:CMAKE_TLS_VERIFY" title="CMAKE_TLS_VERIFY"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CMAKE_TLS_VERIFY</span></code></a> environment variable was added as a fallback
to the existing <span class="target" id="index-0-variable:CMAKE_TLS_VERIFY"></span><a class="reference internal" href="../variable/CMAKE_TLS_VERIFY.html#variable:CMAKE_TLS_VERIFY" title="CMAKE_TLS_VERIFY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_TLS_VERIFY</span></code></a> variable.  It specifies
whether to verify the server certificate for <code class="docutils literal notranslate"><span class="pre">https://</span></code> URLs by default.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_TLS_VERSION"></span><a class="reference internal" href="../variable/CMAKE_TLS_VERSION.html#variable:CMAKE_TLS_VERSION" title="CMAKE_TLS_VERSION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_TLS_VERSION</span></code></a> variable and <span class="target" id="index-0-envvar:CMAKE_TLS_VERSION"></span><a class="reference internal" href="../envvar/CMAKE_TLS_VERSION.html#envvar:CMAKE_TLS_VERSION" title="CMAKE_TLS_VERSION"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CMAKE_TLS_VERSION</span></code></a>
environment variable were added to specify a default minimum TLS version
for connections to <code class="docutils literal notranslate"><span class="pre">https://</span></code> URLs by the <span class="target" id="index-3-command:file"></span><a class="reference internal" href="../command/file.html#download" title="file(download)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(DOWNLOAD)</span></code></a>
and <span class="target" id="index-4-command:file"></span><a class="reference internal" href="../command/file.html#upload" title="file(upload)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">file(UPLOAD)</span></code></a> commands.</p></li>
<li><p>The <span class="target" id="index-0-variable:CMAKE_VS_USE_DEBUG_LIBRARIES"></span><a class="reference internal" href="../variable/CMAKE_VS_USE_DEBUG_LIBRARIES.html#variable:CMAKE_VS_USE_DEBUG_LIBRARIES" title="CMAKE_VS_USE_DEBUG_LIBRARIES"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_VS_USE_DEBUG_LIBRARIES</span></code></a> variable and corresponding
<span class="target" id="index-0-prop_tgt:VS_USE_DEBUG_LIBRARIES"></span><a class="reference internal" href="../prop_tgt/VS_USE_DEBUG_LIBRARIES.html#prop_tgt:VS_USE_DEBUG_LIBRARIES" title="VS_USE_DEBUG_LIBRARIES"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">VS_USE_DEBUG_LIBRARIES</span></code></a> target property were added to explicitly
control <code class="docutils literal notranslate"><span class="pre">UseDebugLibraries</span></code> indicators in <code class="docutils literal notranslate"><span class="pre">.vcxproj</span></code> files.</p></li>
</ul>
</section>
<section id="properties">
<h3><a class="toc-backref" href="#id15" role="doc-backlink">Properties</a><a class="headerlink" href="#properties" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-prop_sf:GENERATED"></span><a class="reference internal" href="../prop_sf/GENERATED.html#prop_sf:GENERATED" title="GENERATED"><code class="xref cmake cmake-prop_sf docutils literal notranslate"><span class="pre">GENERATED</span></code></a> source file property is now visible in all
directories.  See policy <span class="target" id="index-0-policy:CMP0163"></span><a class="reference internal" href="../policy/CMP0163.html#policy:CMP0163" title="CMP0163"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0163</span></code></a>.  Policy <span class="target" id="index-0-policy:CMP0118"></span><a class="reference internal" href="../policy/CMP0118.html#policy:CMP0118" title="CMP0118"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0118</span></code></a>'s
documentation has been revised to describe its actual effects.</p></li>
<li><p>The <span class="target" id="index-0-prop_gbl:PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE"></span><a class="reference internal" href="../prop_gbl/PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE.html#prop_gbl:PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE" title="PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE"><code class="xref cmake cmake-prop_gbl docutils literal notranslate"><span class="pre">PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE</span></code></a> global property
can be used to propagate <span class="target" id="index-0-variable:CMAKE_PROJECT_TOP_LEVEL_INCLUDES"></span><a class="reference internal" href="../variable/CMAKE_PROJECT_TOP_LEVEL_INCLUDES.html#variable:CMAKE_PROJECT_TOP_LEVEL_INCLUDES" title="CMAKE_PROJECT_TOP_LEVEL_INCLUDES"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_PROJECT_TOP_LEVEL_INCLUDES</span></code></a> into
<span class="target" id="index-0-command:try_compile"></span><a class="reference internal" href="../command/try_compile.html#command:try_compile" title="try_compile"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">try_compile()</span></code></a> calls that use the
<a class="reference internal" href="../command/try_compile.html#try-compiling-whole-projects"><span class="std std-ref">whole-project signature</span></a>.
This is primarily intended as a way for dependency providers to be enabled
in such <span class="target" id="index-1-command:try_compile"></span><a class="reference internal" href="../command/try_compile.html#command:try_compile" title="try_compile"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">try_compile()</span></code></a> calls.</p></li>
<li><p>A <span class="target" id="index-0-prop_tgt:VS_FILTER_PROPS"></span><a class="reference internal" href="../prop_tgt/VS_FILTER_PROPS.html#prop_tgt:VS_FILTER_PROPS" title="VS_FILTER_PROPS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">VS_FILTER_PROPS</span></code></a> target property was added to tell
<a class="reference internal" href="../manual/cmake-generators.7.html#visual-studio-generators"><span class="std std-ref">Visual Studio Generators</span></a> to use a custom MSBuild filter
<code class="docutils literal notranslate"><span class="pre">.props</span></code> file.</p></li>
</ul>
</section>
<section id="modules">
<h3><a class="toc-backref" href="#id16" role="doc-backlink">Modules</a><a class="headerlink" href="#modules" title="Link to this heading">¶</a></h3>
<ul>
<li><p>The <span class="target" id="index-0-module:ExternalProject"></span><a class="reference internal" href="../module/ExternalProject.html#module:ExternalProject" title="ExternalProject"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">ExternalProject</span></code></a> module's <span class="target" id="index-0-command:externalproject_add"></span><a class="reference internal" href="../module/ExternalProject.html#command:externalproject_add" title="externalproject_add"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">ExternalProject_Add()</span></code></a>
command gained a <code class="docutils literal notranslate"><span class="pre">TLS_VERSION</span> <span class="pre">&lt;min&gt;</span></code> option, and support for the
<span class="target" id="index-1-variable:CMAKE_TLS_VERSION"></span><a class="reference internal" href="../variable/CMAKE_TLS_VERSION.html#variable:CMAKE_TLS_VERSION" title="CMAKE_TLS_VERSION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_TLS_VERSION</span></code></a> variable and <span class="target" id="index-1-envvar:CMAKE_TLS_VERSION"></span><a class="reference internal" href="../envvar/CMAKE_TLS_VERSION.html#envvar:CMAKE_TLS_VERSION" title="CMAKE_TLS_VERSION"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CMAKE_TLS_VERSION</span></code></a>
environment variable, to specify the minimum TLS version for connections
to <code class="docutils literal notranslate"><span class="pre">https://</span></code> URLs.</p></li>
<li><p>The <span class="target" id="index-0-module:FindBacktrace"></span><a class="reference internal" href="../module/FindBacktrace.html#module:FindBacktrace" title="FindBacktrace"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindBacktrace</span></code></a> module now provides an imported target.</p></li>
<li><p>The <span class="target" id="index-0-module:FindBLAS"></span><a class="reference internal" href="../module/FindBLAS.html#module:FindBLAS" title="FindBLAS"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindBLAS</span></code></a> and <span class="target" id="index-0-module:FindLAPACK"></span><a class="reference internal" href="../module/FindLAPACK.html#module:FindLAPACK" title="FindLAPACK"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindLAPACK</span></code></a> modules gained
support for <code class="docutils literal notranslate"><span class="pre">libblastrampoline</span></code>.</p></li>
<li><p>The <span class="target" id="index-0-module:FindCUDAToolkit"></span><a class="reference internal" href="../module/FindCUDAToolkit.html#module:FindCUDAToolkit" title="FindCUDAToolkit"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindCUDAToolkit</span></code></a> module now provides a target for
<code class="docutils literal notranslate"><span class="pre">libnvfatbin</span></code> and <code class="docutils literal notranslate"><span class="pre">libnvfatbin_static</span></code>, if found.</p></li>
<li><p>The <span class="target" id="index-1-module:FindCUDAToolkit"></span><a class="reference internal" href="../module/FindCUDAToolkit.html#module:FindCUDAToolkit" title="FindCUDAToolkit"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindCUDAToolkit</span></code></a> module now searches the
<span class="target" id="index-0-variable:CMAKE_&lt;LANG&gt;_COMPILER"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER.html#variable:CMAKE_&lt;LANG&gt;_COMPILER" title="CMAKE_&lt;LANG&gt;_COMPILER"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_CUDA_COMPILER</span></code></a>
variable and the <span class="target" id="index-0-envvar:CUDACXX"></span><a class="reference internal" href="../envvar/CUDACXX.html#envvar:CUDACXX" title="CUDACXX"><code class="xref cmake cmake-envvar docutils literal notranslate"><span class="pre">CUDACXX</span></code></a> environment variable
even when the <code class="docutils literal notranslate"><span class="pre">CUDA</span></code> language isn't enabled.</p></li>
<li><p>The <span class="target" id="index-0-module:FindOpenMP"></span><a class="reference internal" href="../module/FindOpenMP.html#module:FindOpenMP" title="FindOpenMP"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindOpenMP</span></code></a> module gained an <code class="docutils literal notranslate"><span class="pre">OpenMP_RUNTIME_MSVC</span></code>
option to control the OpenMP runtime used with MSVC.</p></li>
<li><p>The <span class="target" id="index-0-module:FindPython"></span><a class="reference internal" href="../module/FindPython.html#module:FindPython" title="FindPython"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython</span></code></a> and <span class="target" id="index-0-module:FindPython3"></span><a class="reference internal" href="../module/FindPython3.html#module:FindPython3" title="FindPython3"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython3</span></code></a> modules gained
support for the free threaded Python version.</p></li>
<li><p>The <span class="target" id="index-1-module:FindPython"></span><a class="reference internal" href="../module/FindPython.html#module:FindPython" title="FindPython"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython</span></code></a>, <span class="target" id="index-0-module:FindPython2"></span><a class="reference internal" href="../module/FindPython2.html#module:FindPython2" title="FindPython2"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython2</span></code></a>, and <span class="target" id="index-1-module:FindPython3"></span><a class="reference internal" href="../module/FindPython3.html#module:FindPython3" title="FindPython3"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython3</span></code></a>
modules, on Windows, now offer better support for the Python debug variant:</p>
<ul class="simple">
<li><p>new variables:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">Python_EXECUTABLE_DEBUG</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Python_INTERPRETER</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Python_DEBUG_POSTFIX</span></code></p></li>
</ul>
</li>
<li><p>new targets:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">Python::InterpreterDebug</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Python::InterpreterMultiConfig</span></code></p></li>
</ul>
</li>
</ul>
<p>The <code class="docutils literal notranslate"><span class="pre">python_add_library()</span></code> command now manages the
<span class="target" id="index-0-prop_tgt:DEBUG_POSTFIX"></span><a class="reference internal" href="../prop_tgt/DEBUG_POSTFIX.html#prop_tgt:DEBUG_POSTFIX" title="DEBUG_POSTFIX"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">DEBUG_POSTFIX</span></code></a> target property based on the value
of the <code class="docutils literal notranslate"><span class="pre">Python_DEBUG_POSTFIX</span></code> variable.</p>
</li>
</ul>
</section>
<section id="generator-expressions">
<h3><a class="toc-backref" href="#id17" role="doc-backlink">Generator Expressions</a><a class="headerlink" href="#generator-expressions" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-genex:C_COMPILER_FRONTEND_VARIANT"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:C_COMPILER_FRONTEND_VARIANT" title="C_COMPILER_FRONTEND_VARIANT"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">&lt;LANG&gt;_COMPILER_FRONTEND_VARIANT</span></code></a>
family of generator expressions were added to access the value of the
associated <span class="target" id="index-0-variable:CMAKE_&lt;LANG&gt;_COMPILER_FRONTEND_VARIANT"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER_FRONTEND_VARIANT.html#variable:CMAKE_&lt;LANG&gt;_COMPILER_FRONTEND_VARIANT" title="CMAKE_&lt;LANG&gt;_COMPILER_FRONTEND_VARIANT"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_&lt;LANG&gt;_COMPILER_FRONTEND_VARIANT</span></code></a> variables.</p></li>
<li><p>Link features, as used with the <span class="target" id="index-0-genex:LINK_LIBRARY"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:LINK_LIBRARY" title="LINK_LIBRARY"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">LINK_LIBRARY</span></code></a> generator expression,
gained the ability to have attributes that describe their behavior by
specifying the <span class="target" id="index-0-variable:CMAKE_LINK_LIBRARY_&lt;FEATURE&gt;_ATTRIBUTES"></span><a class="reference internal" href="../variable/CMAKE_LINK_LIBRARY_FEATURE_ATTRIBUTES.html#variable:CMAKE_LINK_LIBRARY_&lt;FEATURE&gt;_ATTRIBUTES" title="CMAKE_LINK_LIBRARY_&lt;FEATURE&gt;_ATTRIBUTES"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_LINK_LIBRARY_&lt;FEATURE&gt;_ATTRIBUTES</span></code></a> or
<span class="target" id="index-0-variable:CMAKE_&lt;LANG&gt;_LINK_LIBRARY_&lt;FEATURE&gt;_ATTRIBUTES"></span><a class="reference internal" href="../variable/CMAKE_LANG_LINK_LIBRARY_FEATURE_ATTRIBUTES.html#variable:CMAKE_&lt;LANG&gt;_LINK_LIBRARY_&lt;FEATURE&gt;_ATTRIBUTES" title="CMAKE_&lt;LANG&gt;_LINK_LIBRARY_&lt;FEATURE&gt;_ATTRIBUTES"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_&lt;LANG&gt;_LINK_LIBRARY_&lt;FEATURE&gt;_ATTRIBUTES</span></code></a> variables.</p></li>
<li><p>The <span class="target" id="index-0-genex:QUOTE"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:QUOTE" title="QUOTE"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">QUOTE</span></code></a> generator expression was added to evaluate to <code class="docutils literal notranslate"><span class="pre">&quot;</span></code>.</p></li>
<li><p>The <span class="target" id="index-0-genex:TARGET_PROPERTY"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:TARGET_PROPERTY" title="TARGET_PROPERTY"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">TARGET_PROPERTY</span></code></a> generator expression learned to evaluate
<a class="reference internal" href="../manual/cmake-buildsystem.7.html#custom-transitive-properties"><span class="std std-ref">custom transitive properties</span></a>
defined by new <span class="target" id="index-0-prop_tgt:TRANSITIVE_COMPILE_PROPERTIES"></span><a class="reference internal" href="../prop_tgt/TRANSITIVE_COMPILE_PROPERTIES.html#prop_tgt:TRANSITIVE_COMPILE_PROPERTIES" title="TRANSITIVE_COMPILE_PROPERTIES"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">TRANSITIVE_COMPILE_PROPERTIES</span></code></a> and
<span class="target" id="index-0-prop_tgt:TRANSITIVE_LINK_PROPERTIES"></span><a class="reference internal" href="../prop_tgt/TRANSITIVE_LINK_PROPERTIES.html#prop_tgt:TRANSITIVE_LINK_PROPERTIES" title="TRANSITIVE_LINK_PROPERTIES"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">TRANSITIVE_LINK_PROPERTIES</span></code></a> target properties.</p></li>
<li><p>The <span class="target" id="index-1-genex:TARGET_PROPERTY"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#genex:TARGET_PROPERTY" title="TARGET_PROPERTY"><code class="xref cmake cmake-genex docutils literal notranslate"><span class="pre">TARGET_PROPERTY</span></code></a> generator expression now evaluates target
properties <span class="target" id="index-0-prop_tgt:INTERFACE_LINK_OPTIONS"></span><a class="reference internal" href="../prop_tgt/INTERFACE_LINK_OPTIONS.html#prop_tgt:INTERFACE_LINK_OPTIONS" title="INTERFACE_LINK_OPTIONS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INTERFACE_LINK_OPTIONS</span></code></a>,
<span class="target" id="index-0-prop_tgt:INTERFACE_LINK_DIRECTORIES"></span><a class="reference internal" href="../prop_tgt/INTERFACE_LINK_DIRECTORIES.html#prop_tgt:INTERFACE_LINK_DIRECTORIES" title="INTERFACE_LINK_DIRECTORIES"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INTERFACE_LINK_DIRECTORIES</span></code></a>, and
<span class="target" id="index-0-prop_tgt:INTERFACE_LINK_DEPENDS"></span><a class="reference internal" href="../prop_tgt/INTERFACE_LINK_DEPENDS.html#prop_tgt:INTERFACE_LINK_DEPENDS" title="INTERFACE_LINK_DEPENDS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INTERFACE_LINK_DEPENDS</span></code></a> correctly by following private
dependencies of static libraries.  See policy <span class="target" id="index-0-policy:CMP0166"></span><a class="reference internal" href="../policy/CMP0166.html#policy:CMP0166" title="CMP0166"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0166</span></code></a>.</p></li>
</ul>
</section>
<section id="ctest">
<h3><a class="toc-backref" href="#id18" role="doc-backlink">CTest</a><a class="headerlink" href="#ctest" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-command:ctest_submit"></span><a class="reference internal" href="../command/ctest_submit.html#command:ctest_submit" title="ctest_submit"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">ctest_submit()</span></code></a> command and <a class="reference internal" href="../manual/ctest.1.html#cmdoption-ctest-T"><code class="xref std std-option docutils literal notranslate"><span class="pre">ctest</span> <span class="pre">-T</span> <span class="pre">Submit</span></code></a>
step gained <code class="docutils literal notranslate"><span class="pre">TLSVersion</span></code> and <code class="docutils literal notranslate"><span class="pre">TLSVerify</span></code> options to control negotiation
with <code class="docutils literal notranslate"><span class="pre">https://</span></code> URLs.  See the <span class="target" id="index-0-variable:CTEST_TLS_VERSION"></span><a class="reference internal" href="../variable/CTEST_TLS_VERSION.html#variable:CTEST_TLS_VERSION" title="CTEST_TLS_VERSION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CTEST_TLS_VERSION</span></code></a> and
<span class="target" id="index-0-variable:CTEST_TLS_VERIFY"></span><a class="reference internal" href="../variable/CTEST_TLS_VERIFY.html#variable:CTEST_TLS_VERIFY" title="CTEST_TLS_VERIFY"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CTEST_TLS_VERIFY</span></code></a> variables.</p></li>
</ul>
</section>
<section id="cpack">
<h3><a class="toc-backref" href="#id19" role="doc-backlink">CPack</a><a class="headerlink" href="#cpack" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-0-cpack_gen:CPack Inno Setup Generator"></span><a class="reference internal" href="../cpack_gen/innosetup.html#cpack_gen:CPack Inno Setup Generator" title="CPack Inno Setup Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">Inno</span> <span class="pre">Setup</span> <span class="pre">Generator</span></code></a> is now available
on non-Windows hosts.</p></li>
<li><p>The <span class="target" id="index-0-cpack_gen:CPack NuGet Generator"></span><a class="reference internal" href="../cpack_gen/nuget.html#cpack_gen:CPack NuGet Generator" title="CPack NuGet Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">NuGet</span> <span class="pre">Generator</span></code></a> gained the
<span class="target" id="index-0-variable:CPACK_NUGET_PACKAGE_README"></span><a class="reference internal" href="../cpack_gen/nuget.html#variable:CPACK_NUGET_PACKAGE_README" title="CPACK_NUGET_PACKAGE_README"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_NUGET_PACKAGE_README</span></code></a>,
<span class="target" id="index-0-variable:CPACK_NUGET_PACKAGE_REPOSITORY_URL"></span><a class="reference internal" href="../cpack_gen/nuget.html#variable:CPACK_NUGET_PACKAGE_REPOSITORY_URL" title="CPACK_NUGET_PACKAGE_REPOSITORY_URL"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_NUGET_PACKAGE_REPOSITORY_URL</span></code></a>,
<span class="target" id="index-0-variable:CPACK_NUGET_PACKAGE_REPOSITORY_TYPE"></span><a class="reference internal" href="../cpack_gen/nuget.html#variable:CPACK_NUGET_PACKAGE_REPOSITORY_TYPE" title="CPACK_NUGET_PACKAGE_REPOSITORY_TYPE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_NUGET_PACKAGE_REPOSITORY_TYPE</span></code></a>,
<span class="target" id="index-0-variable:CPACK_NUGET_PACKAGE_REPOSITORY_BRANCH"></span><a class="reference internal" href="../cpack_gen/nuget.html#variable:CPACK_NUGET_PACKAGE_REPOSITORY_BRANCH" title="CPACK_NUGET_PACKAGE_REPOSITORY_BRANCH"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_NUGET_PACKAGE_REPOSITORY_BRANCH</span></code></a>, and
<span class="target" id="index-0-variable:CPACK_NUGET_PACKAGE_REPOSITORY_COMMIT"></span><a class="reference internal" href="../cpack_gen/nuget.html#variable:CPACK_NUGET_PACKAGE_REPOSITORY_COMMIT" title="CPACK_NUGET_PACKAGE_REPOSITORY_COMMIT"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_NUGET_PACKAGE_REPOSITORY_COMMIT</span></code></a> variables.</p></li>
<li><p>The <span class="target" id="index-1-cpack_gen:CPack NuGet Generator"></span><a class="reference internal" href="../cpack_gen/nuget.html#cpack_gen:CPack NuGet Generator" title="CPack NuGet Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">NuGet</span> <span class="pre">Generator</span></code></a> can now generate dependency groups
for framework-specific dependencies. The <span class="target" id="index-0-variable:CPACK_NUGET_PACKAGE_TFMS"></span><a class="reference internal" href="../cpack_gen/nuget.html#variable:CPACK_NUGET_PACKAGE_TFMS" title="CPACK_NUGET_PACKAGE_TFMS"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_NUGET_PACKAGE_TFMS</span></code></a>
variable was added to specify a list of target framework monikers (TFMs)
for which groups should be generated.</p></li>
<li><p>The <span class="target" id="index-0-cpack_gen:CPack WIX Generator"></span><a class="reference internal" href="../cpack_gen/wix.html#cpack_gen:CPack WIX Generator" title="CPack WIX Generator"><code class="xref cmake cmake-cpack_gen docutils literal notranslate"><span class="pre">CPack</span> <span class="pre">WIX</span> <span class="pre">Generator</span></code></a> gained support for WiX Toolset v4.
See the <span class="target" id="index-0-variable:CPACK_WIX_VERSION"></span><a class="reference internal" href="../cpack_gen/wix.html#variable:CPACK_WIX_VERSION" title="CPACK_WIX_VERSION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CPACK_WIX_VERSION</span></code></a> variable.</p></li>
</ul>
</section>
</section>
<section id="deprecated-and-removed-features">
<h2><a class="toc-backref" href="#id20" role="doc-backlink">Deprecated and Removed Features</a><a class="headerlink" href="#deprecated-and-removed-features" title="Link to this heading">¶</a></h2>
<ul class="simple">
<li><p>The <span class="target" id="index-0-module:FindBoost"></span><a class="reference internal" href="../module/FindBoost.html#module:FindBoost" title="FindBoost"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindBoost</span></code></a> module has been removed by policy <span class="target" id="index-0-policy:CMP0167"></span><a class="reference internal" href="../policy/CMP0167.html#policy:CMP0167" title="CMP0167"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0167</span></code></a>.
Port projects to upstream Boost's <code class="docutils literal notranslate"><span class="pre">BoostConfig.cmake</span></code> package
configuration file, for which <code class="docutils literal notranslate"><span class="pre">find_package(Boost)</span></code> now searches.</p></li>
<li><p>Calling <span class="target" id="index-0-command:fetchcontent_populate"></span><a class="reference internal" href="../module/FetchContent.html#command:fetchcontent_populate" title="fetchcontent_populate"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">FetchContent_Populate()</span></code></a> with just the name of a
dependency is now deprecated. Projects should call
<span class="target" id="index-0-command:fetchcontent_makeavailable"></span><a class="reference internal" href="../module/FetchContent.html#command:fetchcontent_makeavailable" title="fetchcontent_makeavailable"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">FetchContent_MakeAvailable()</span></code></a> instead. See policy <span class="target" id="index-0-policy:CMP0169"></span><a class="reference internal" href="../policy/CMP0169.html#policy:CMP0169" title="CMP0169"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0169</span></code></a>.
Calling <span class="target" id="index-1-command:fetchcontent_populate"></span><a class="reference internal" href="../module/FetchContent.html#command:fetchcontent_populate" title="fetchcontent_populate"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">FetchContent_Populate()</span></code></a> with full population details
rather than just a dependency name remains fully supported.</p></li>
<li><p>The <span class="target" id="index-0-generator:Visual Studio 9 2008"></span><a class="reference internal" href="../generator/Visual%20Studio%209%202008.html#generator:Visual Studio 9 2008" title="Visual Studio 9 2008"><code class="xref cmake cmake-generator docutils literal notranslate"><span class="pre">Visual</span> <span class="pre">Studio</span> <span class="pre">9</span> <span class="pre">2008</span></code></a> generator has been removed.</p></li>
</ul>
</section>
<section id="other-changes">
<h2><a class="toc-backref" href="#id21" role="doc-backlink">Other Changes</a><a class="headerlink" href="#other-changes" title="Link to this heading">¶</a></h2>
<ul class="simple">
<li><p><span class="target" id="index-0-manual:ctest(1)"></span><a class="reference internal" href="../manual/ctest.1.html#manual:ctest(1)" title="ctest(1)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">ctest(1)</span></code></a> now rejects unknown command-line arguments with an error.
Previously they were silently ignored.</p></li>
<li><p>The precompiled Windows <code class="docutils literal notranslate"><span class="pre">.msi</span></code> installers provided on
<a class="reference external" href="https://cmake.org/download/">cmake.org</a>, when performing a fresh
installation, now modify the system-wide <code class="docutils literal notranslate"><span class="pre">PATH</span></code> by default.
When replacing an existing installation of 3.30 or later, the <code class="docutils literal notranslate"><span class="pre">PATH</span></code>
modification preference is preserved by default.</p></li>
<li><p>The official <code class="docutils literal notranslate"><span class="pre">.zip</span></code> source archive provided on
<a class="reference external" href="https://cmake.org/download/">cmake.org</a> now uses LF newlines,
instead of CRLF newlines, for consistency with modern conventions.</p></li>
<li><p>The durations printed after &quot;Configuring done&quot; and &quot;Generating done&quot;
messages now reflect time spent in generator-specific steps, and
in a code model evaluation step at the beginning of generation that
was not previously captured.  Printed durations may appear longer
than in previous versions of CMake, but are more accurate.</p></li>
<li><p><span class="target" id="index-0-module:FetchContent"></span><a class="reference internal" href="../module/FetchContent.html#module:FetchContent" title="FetchContent"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FetchContent</span></code></a> now prefers to populate content directly rather
than using a separate sub-build. This may significantly improve configure
times on some systems (Windows especially, but also on macOS when using
the Xcode generator). <a class="reference internal" href="../manual/cmake.1.html#cmdoption-cmake-fresh"><code class="xref std std-option docutils literal notranslate"><span class="pre">cmake</span> <span class="pre">--fresh</span></code></a> also forces the download,
update, and patch steps of directly populated dependencies to be re-executed.
Policy <span class="target" id="index-0-policy:CMP0168"></span><a class="reference internal" href="../policy/CMP0168.html#policy:CMP0168" title="CMP0168"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0168</span></code></a> provides backward compatibility for those projects
that still rely on using a sub-build for content population.</p></li>
<li><p>When <span class="target" id="index-0-variable:FETCHCONTENT_FULLY_DISCONNECTED"></span><a class="reference internal" href="../module/FetchContent.html#variable:FETCHCONTENT_FULLY_DISCONNECTED" title="FETCHCONTENT_FULLY_DISCONNECTED"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">FETCHCONTENT_FULLY_DISCONNECTED</span></code></a> is set to true,
<span class="target" id="index-1-command:fetchcontent_makeavailable"></span><a class="reference internal" href="../module/FetchContent.html#command:fetchcontent_makeavailable" title="fetchcontent_makeavailable"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">FetchContent_MakeAvailable()</span></code></a> and the single-argument form of
<span class="target" id="index-2-command:fetchcontent_populate"></span><a class="reference internal" href="../module/FetchContent.html#command:fetchcontent_populate" title="fetchcontent_populate"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">FetchContent_Populate()</span></code></a> require that the dependency's source
directory has already been populated. CMake 3.29 and earlier did not
check this requirement, but it is now enforced, subject to policy
<span class="target" id="index-0-policy:CMP0170"></span><a class="reference internal" href="../policy/CMP0170.html#policy:CMP0170" title="CMP0170"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0170</span></code></a>.</p></li>
</ul>
</section>
<section id="updates">
<h2><a class="toc-backref" href="#id22" role="doc-backlink">Updates</a><a class="headerlink" href="#updates" title="Link to this heading">¶</a></h2>
<p>Changes made since CMake 3.30.0 include the following.</p>
<section id="id2">
<h3><a class="toc-backref" href="#id23" role="doc-backlink">3.30.1, 3.30.2</a><a class="headerlink" href="#id2" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>These versions made no changes to documented features or interfaces.
Some implementation updates were made to support ecosystem changes
and/or fix regressions.</p></li>
</ul>
</section>
<section id="id3">
<h3><a class="toc-backref" href="#id24" role="doc-backlink">3.30.3</a><a class="headerlink" href="#id3" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-1-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project(&lt;project-name&gt;)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project(&lt;PROJECT-NAME&gt;)</span></code></a> command now sets
<span class="target" id="index-0-variable:&lt;PROJECT-NAME&gt;_SOURCE_DIR"></span><a class="reference internal" href="../variable/PROJECT-NAME_SOURCE_DIR.html#variable:&lt;PROJECT-NAME&gt;_SOURCE_DIR" title="&lt;PROJECT-NAME&gt;_SOURCE_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_SOURCE_DIR</span></code></a>, <span class="target" id="index-0-variable:&lt;PROJECT-NAME&gt;_BINARY_DIR"></span><a class="reference internal" href="../variable/PROJECT-NAME_BINARY_DIR.html#variable:&lt;PROJECT-NAME&gt;_BINARY_DIR" title="&lt;PROJECT-NAME&gt;_BINARY_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_BINARY_DIR</span></code></a>,
and <span class="target" id="index-0-variable:&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL"></span><a class="reference internal" href="../variable/PROJECT-NAME_IS_TOP_LEVEL.html#variable:&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL" title="&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL</span></code></a> as normal variables in addition
to setting them as cache entries.  This is needed to preserve support for
some <span class="target" id="index-1-module:FetchContent"></span><a class="reference internal" href="../module/FetchContent.html#module:FetchContent" title="FetchContent"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FetchContent</span></code></a> use cases under policy <span class="target" id="index-1-policy:CMP0169"></span><a class="reference internal" href="../policy/CMP0169.html#policy:CMP0169" title="CMP0169"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0169</span></code></a>'s
NEW behavior.</p></li>
<li><p>The <span class="target" id="index-2-module:FindPython"></span><a class="reference internal" href="../module/FindPython.html#module:FindPython" title="FindPython"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython</span></code></a> and <span class="target" id="index-2-module:FindPython3"></span><a class="reference internal" href="../module/FindPython3.html#module:FindPython3" title="FindPython3"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">FindPython3</span></code></a> modules now define,
respectively, the <code class="docutils literal notranslate"><span class="pre">Python_DEFINITIONS</span></code> and  <code class="docutils literal notranslate"><span class="pre">Python3_DEFINITIONS</span></code>
variables on Windows to support development with the free threaded
version of Python.  The <span class="target" id="index-0-prop_tgt:INTERFACE_COMPILE_DEFINITIONS"></span><a class="reference internal" href="../prop_tgt/INTERFACE_COMPILE_DEFINITIONS.html#prop_tgt:INTERFACE_COMPILE_DEFINITIONS" title="INTERFACE_COMPILE_DEFINITIONS"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">INTERFACE_COMPILE_DEFINITIONS</span></code></a> target
property is also defined for the various targets provided by these modules.</p></li>
</ul>
</section>
<section id="id4">
<h3><a class="toc-backref" href="#id25" role="doc-backlink">3.30.4</a><a class="headerlink" href="#id4" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-2-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project(&lt;project-name&gt;)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project(&lt;PROJECT-NAME&gt;)</span></code></a> command now sets
<span class="target" id="index-1-variable:&lt;PROJECT-NAME&gt;_SOURCE_DIR"></span><a class="reference internal" href="../variable/PROJECT-NAME_SOURCE_DIR.html#variable:&lt;PROJECT-NAME&gt;_SOURCE_DIR" title="&lt;PROJECT-NAME&gt;_SOURCE_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_SOURCE_DIR</span></code></a>, <span class="target" id="index-1-variable:&lt;PROJECT-NAME&gt;_BINARY_DIR"></span><a class="reference internal" href="../variable/PROJECT-NAME_BINARY_DIR.html#variable:&lt;PROJECT-NAME&gt;_BINARY_DIR" title="&lt;PROJECT-NAME&gt;_BINARY_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_BINARY_DIR</span></code></a>,
and <span class="target" id="index-1-variable:&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL"></span><a class="reference internal" href="../variable/PROJECT-NAME_IS_TOP_LEVEL.html#variable:&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL" title="&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL</span></code></a> as normal variables only if they
are already set as cache or non-cache variables when <span class="target" id="index-3-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project()</span></code></a> is
invoked.  Cache entries by the same names are always set as before.
This refines 3.30.3's behavior change to restore behavior of nested
directories that call <span class="target" id="index-4-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project()</span></code></a> with the same project name,
but the implementation in this release is flawed (this release note has
been retroactively updated).  It can result in different behavior between
the first and subsequent runs.  Do not use CMake 3.30.4 if your project
contains nested calls to <span class="target" id="index-5-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project()</span></code></a> with the same project name
and you use these variables.</p></li>
</ul>
</section>
<section id="id5">
<h3><a class="toc-backref" href="#id26" role="doc-backlink">3.30.5</a><a class="headerlink" href="#id5" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>The <span class="target" id="index-6-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project(&lt;project-name&gt;)"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project(&lt;PROJECT-NAME&gt;)</span></code></a> command now sets
<span class="target" id="index-2-variable:&lt;PROJECT-NAME&gt;_SOURCE_DIR"></span><a class="reference internal" href="../variable/PROJECT-NAME_SOURCE_DIR.html#variable:&lt;PROJECT-NAME&gt;_SOURCE_DIR" title="&lt;PROJECT-NAME&gt;_SOURCE_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_SOURCE_DIR</span></code></a>, <span class="target" id="index-2-variable:&lt;PROJECT-NAME&gt;_BINARY_DIR"></span><a class="reference internal" href="../variable/PROJECT-NAME_BINARY_DIR.html#variable:&lt;PROJECT-NAME&gt;_BINARY_DIR" title="&lt;PROJECT-NAME&gt;_BINARY_DIR"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_BINARY_DIR</span></code></a>,
and <span class="target" id="index-2-variable:&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL"></span><a class="reference internal" href="../variable/PROJECT-NAME_IS_TOP_LEVEL.html#variable:&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL" title="&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">&lt;PROJECT-NAME&gt;_IS_TOP_LEVEL</span></code></a> as non-cache variables only if
they are already set as non-cache variables when <span class="target" id="index-7-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project()</span></code></a> is
invoked.  Cache entries by the same names are always set as before.
This refines 3.30.3's behavior change to restore behavior of nested
directories that call <span class="target" id="index-8-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project()</span></code></a> with the same project name,
and it addresses the bug in the implementation introduced in 3.30.4.</p></li>
</ul>
</section>
<section id="id6">
<h3><a class="toc-backref" href="#id27" role="doc-backlink">3.30.6, 3.30.7, 3.30.8, 3.30.9</a><a class="headerlink" href="#id6" title="Link to this heading">¶</a></h3>
<ul class="simple">
<li><p>These versions made no changes to documented features or interfaces.
Some implementation updates were made to support ecosystem changes
and/or fix regressions.</p></li>
</ul>
</section>
</section>
</section>


            <div class="clearer"></div>
          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="Main">
        <div class="sphinxsidebarwrapper">
  <div>
    <h3>Table of Contents</h3>
    <ul>
<li><a class="reference internal" href="#">CMake 3.30 Release Notes</a><ul>
<li><a class="reference internal" href="#new-features">New Features</a><ul>
<li><a class="reference internal" href="#presets">Presets</a></li>
<li><a class="reference internal" href="#file-based-api">File-Based API</a></li>
<li><a class="reference internal" href="#generators">Generators</a></li>
<li><a class="reference internal" href="#languages">Languages</a></li>
<li><a class="reference internal" href="#commands">Commands</a></li>
<li><a class="reference internal" href="#variables">Variables</a></li>
<li><a class="reference internal" href="#properties">Properties</a></li>
<li><a class="reference internal" href="#modules">Modules</a></li>
<li><a class="reference internal" href="#generator-expressions">Generator Expressions</a></li>
<li><a class="reference internal" href="#ctest">CTest</a></li>
<li><a class="reference internal" href="#cpack">CPack</a></li>
</ul>
</li>
<li><a class="reference internal" href="#deprecated-and-removed-features">Deprecated and Removed Features</a></li>
<li><a class="reference internal" href="#other-changes">Other Changes</a></li>
<li><a class="reference internal" href="#updates">Updates</a><ul>
<li><a class="reference internal" href="#id2">3.30.1, 3.30.2</a></li>
<li><a class="reference internal" href="#id3">3.30.3</a></li>
<li><a class="reference internal" href="#id4">3.30.4</a></li>
<li><a class="reference internal" href="#id5">3.30.5</a></li>
<li><a class="reference internal" href="#id6">3.30.6, 3.30.7, 3.30.8, 3.30.9</a></li>
</ul>
</li>
</ul>
</li>
</ul>

  </div>
  <div>
    <h4>Previous topic</h4>
    <p class="topless"><a href="3.31.html"
                          title="previous chapter">CMake 3.31 Release Notes</a></p>
  </div>
  <div>
    <h4>Next topic</h4>
    <p class="topless"><a href="3.29.html"
                          title="next chapter">CMake 3.29 Release Notes</a></p>
  </div>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/release/3.30.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<search id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="Related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="3.29.html" title="CMake 3.29 Release Notes"
             >next</a> |</li>
        <li class="right" >
          <a href="3.31.html" title="CMake 3.31 Release Notes"
             >previous</a> |</li>
  <li>
    <label class="sidebar-toggle" for="sidebar-check"></label>
  </li>
  <li class="rootlink">
    <img src="../_static/cmake-logo-16.png" width="16" height="16" alt=""/>
    <a href="https://cmake.org/">CMake 4.1.1</a>
    <span class="reldelim1"> &#187;</span>
  </li>
  <li>
    <a href="../index.html">Documentation</a> &#187;
  </li>

          <li class="nav-item nav-item-1"><a href="index.html" >CMake Release Notes</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">CMake 3.30 Release Notes</a></li> 
      </ul>
    </div>

    <div class="footer" role="contentinfo">
    &#169; Copyright 2000-2025 Kitware, Inc. and Contributors.
      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3.
    </div>
<script type="text/javascript">
(function() {
  "use strict";
  const hide = () => document.getElementById("sidebar-check").checked = false;
  addEventListener("keydown", e => (e.key === "Escape") && hide());
  addEventListener("click", e => (e.target.tagName === "A") && hide());
  addEventListener("hashchange", hide)
})();
</script>
  </body>
</html>